The present invention relates generally to a flash translation layer method, and more particularly, but not by way of limitation, to a system, method, and computer program product for instantiating a range of blocks on a Solid-State Disk (SSD) such that each type of the flash characteristics can be included in the SSD.
A Flash Translation Layer (FTL) is a piece of software that runs on Solid-State Disks (SSDs) to manage the translation of the logical block numbers to physical block numbers, wear-leveling, garbage collection, etc. Conventionally, SSDs have a single FTL running as a microcode for the entire SSD that manages all the negative-AND (NAND) blocks in a similar manner. In other words, the conventional FTL's allocate free blocks of the NAND to perform a feature (e.g., encryption, metrics, compression, etc.) according to the one flash characteristic of the translation table (e.g., page level tables, block level tables, hybrid FTL tables, etc.).
However, the conventional SSDs do not allow the flexibility of using the SSD in a heterogeneous manner, for various purposes. That is, conventional FTLs on the SSDs cannot be dynamically “programmed” and heterogeneous FTLs cannot be dynamically instantiated on a single SSD.
Thus, the needs in the art include the needs to instantiate a range of free blocks of the NAND for a particular feature and translation table such that multiple types of features and translation table formats can run on a single SSD to enable next generation data centers and software-defined environments where FTL can receive commands from the higher levels software and dynamically orchestrate the storage for given requirements.